package com.efuture.chapterfive

/* @Description: Kotlin语言对象表达式学习(object:对象表达式)
 * @Auther: zhaoshanshan
 * @Date: 2022/03/07/12:56 下午
 */
open class Demo81{
    open fun add (){
        println("我是父类加法")
    }
    open fun del (){
        println("我是父类减法")
    }
}
fun main() {
  //匿名对象表达式
   val p = object : Demo81(){
        override fun add() {
           println("我是匿名对象表达式调用加法")
        }

        override fun del() {
            println("我是匿名对象表达式调用减法")
        }
    }
    p.add()//匿名对象表达式调用
    p.del()//匿名对象表达式调用

    //具名对象实现方式
    val d = DemoImpl()
    d.add()//具名调用
    d.del()//具名调用

    //对java接口用Kotlin对象表达式方式
    val r = object : Runnable{
        override fun run() {
            println("对java接口用Kotlin对象表达式方式实现")
        }
    }
    r.run()

    //对java接口 用java最简洁的方式
    val r2 = Runnable{
        println("对java接口用java最简洁的方式实现")
    }
    r2.run()

    //对Kotlin接口的实现 只能使用对象表达式 不能使用java简单版实现
    val r3 = object : RunnableKt{
        override fun run() {
            println("对Kotlin接口用对象表达式方式实现")
        }
    }
    r3.run()
}
class DemoImpl:Demo81(){
    override fun add() {
        println("我是具名对象表达式调用加法")
    }

    override fun del() {
        println("我是具名对象表达式调用减法")
    }
}
//Kotlin接口
interface RunnableKt{
    fun run()
}
    